print("不懂科技就会落伍！每天进步一点点，今天量子钛又学习了Python的字符串方法，欢迎大神们指正错误！")
# [钛妹]: 钛哥，学了这么多 “is” 检查方法，今天感觉可以换换口味啦！我们学点什么新方法呢？
# [钛哥]: 哈哈，钛妹，今天我们来学习几个和字符串格式以及连接有关的实用方法，让我们的字符串更漂亮、更灵活！
# [钛妹]: `istitle()` 方法，上次我们学了基础的标题格式检查，今天还有什么新发现吗？
# [钛哥]: 钛妹真是好学！  `istitle()`  方法虽然看起来简单，但其实还有一些细节值得我们深入了解。
# [钛哥]: 比如，包含数字和特殊字符的字符串， `istitle()`  会怎么判断呢？ 让我们通过实例的例子一起来探索一下！

# 例子 1: 包含数字的标题
title_with_numbers = "Chapter 1: Introduction"
print("\n# [钛哥]:  例子 1: 包含数字的标题")
print(f"# 字符串 '{title_with_numbers}' 是标题格式吗? {title_with_numbers.istitle()}") # True，数字不影响标题格式判断

# 例子 2: 包含特殊字符的标题
title_with_symbols = "Hello, World!"
print("\n# [钛哥]:  例子 2: 包含特殊字符的标题")
print(f"# 字符串 '{title_with_symbols}' 是标题格式吗? {title_with_symbols.istitle()}") # True，标点符号不影响标题格式判断

# 例子 3:  混合大小写的不规范标题
non_title_mixed_case = "hELLo wORLd"
print("\n# [钛哥]:  例子 3: 混合大小写的不规范标题")
print(f"# 字符串 '{non_title_mixed_case}' 是标题格式吗? {non_title_mixed_case.istitle()}") # False,  单词中间出现大写或小写字母就不是标题格式

# [钛妹]:  原来 `istitle()`  对数字和标点符号很宽容嘛！  但是对单词内部的大小写要求很严格！  学习 `istitle()`  ，可以更好地规范我们的标题格式！
# [钛妹]: `isupper()` 方法，我们之前也学过了，它是检查字符串是否全是大写字母。  除了简单判断全大写，`isupper()`  还有什么更高级的应用吗？
# [钛哥]:  钛妹真会思考！  `isupper()`  虽然简单，但结合其他字符串方法，可以实现更复杂的文本处理功能。
# [钛哥]: 比如，我们可以用  `isupper()`  来判断一个字符串中是否 *包含* 大写字母，或者统计大写字母的数量。  让我们来看一些进阶应用。

# 例子 1: 判断字符串是否 *包含* 大写字母
text_with_uppercase = "This text has Uppercase"
text_without_uppercase = "this text has no uppercase"

has_uppercase1 = any(c.isupper() for c in text_with_uppercase) # 检查字符串中是否 *至少包含一个* 大写字母
has_uppercase2 = any(c.isupper() for c in text_without_uppercase)

print("\n# [钛哥]:  例子 1: 判断字符串是否 *包含* 大写字母")
print(f"# 文本 '{text_with_uppercase}' 包含大写字母吗? {has_uppercase1}") # True
print(f"# 文本 '{text_without_uppercase}' 包含大写字母吗? {has_uppercase2}") # False
print("# (使用 `any()` 和生成器表达式结合 `isupper()` 来实现 *包含* 判断)")

# 例子 2:  统计字符串中大写字母的数量
text_for_uppercase_count = "UPPERcase COUNT"
uppercase_count = sum(1 for c in text_for_uppercase_count if c.isupper()) # 统计大写字母数量
print("\n# [钛哥]:  例子 2:  统计字符串中大写字母的数量")
print(f"# 文本 '{text_for_uppercase_count}' 中大写字母数量: {uppercase_count}")
print("# (使用 `sum()` 和生成器表达式结合 `isupper()` 来统计数量)")

# [钛妹]:  原来 `isupper()`  还可以这样用！  结合 `any()` 和 `sum()` ，就可以实现更灵活的大写字母检查和统计！  字符串方法真是变幻无穷！
# [钛妹]: `join()` 方法，上次我们学了用 `join()` 连接字符串列表，还可以连接其他类型的可迭代对象吗？
# [钛哥]:  钛妹想得真周到！  `join()`  方法不仅可以连接列表，还可以连接其他可迭代对象，比如元组、集合，甚至是自定义的可迭代对象！ 
# [钛哥]: 只要可迭代对象中的元素是字符串，`join()`  就能把它们连接起来！ 让我们来试试连接不同类型的可迭代对象。

# 例子 1: 连接元组
string_tuple = ("Hello", "Python", "Tuple") # 字符串元组
joined_tuple_string = "-".join(string_tuple) # 用连字符 "-" 连接元组
print("\n# [钛哥]:  例子 1: 连接元组")
print(f"# 字符串元组: {string_tuple}")
print(f"# 使用 '-' 连接元组后: '{joined_tuple_string}'")

# 例子 2: 连接集合 (注意：集合是无序的，连接结果的顺序可能不固定)
string_set = {"World", "Hello", "Set"} # 字符串集合
joined_set_string = ",".join(string_set) # 用逗号 "," 连接集合
print("\n# [钛哥]:  例子 2: 连接集合 (注意：集合是无序的)")
print(f"# 字符串集合: {string_set}")
print(f"# 使用 ',' 连接集合后: '{joined_set_string}'") # 顺序可能和原始集合不同

# 例子 3:  使用空字符串 "" 连接 (无缝连接)
string_list_no_separator = ["No", "Separator", "Needed"]
joined_no_separator_string = "".join(string_list_no_separator) # 使用空字符串 "" 连接，无缝连接
print("\n# [钛哥]:  例子 3: 使用空字符串 '' 连接 (无缝连接)")
print(f"# 字符串列表: {string_list_no_separator}")
print(f"# 使用 '' 连接列表后: '{joined_no_separator_string}'") # 无缝连接，单词连在一起
# [钛妹]:  `join()`  真是太强大了！  列表、元组、集合，统统都能连接！  而且还可以自定义连接符，甚至无缝连接！  字符串连接的艺术，尽在 `join()` ！
# [钛哥]:  钛妹，又到了总结时刻，你给大家总结一下今天我们学习的这三个常用的字符串方法吧
# [钛妹]: 好嘞!
print("# - `istitle()`:  标题格式检查 (深入细节，数字和符号的兼容性)")
print("# - `isupper()`:  大写检查 (进阶应用，结合 `any()` 和 `sum()` 实现更复杂功能)")
print("# - `join()`:  连接字符串 (连接不同类型的可迭代对象，掌握连接的艺术)")
# [钛哥]:  字符串方法就像乐高积木，灵活组合，创意无限！  继续学习，你会发现更多字符串处理的乐趣！
# [钛妹]: 是啊！朋友们这期内容就到这里了，你是不是感觉又进步了一点点？点赞关注不迷路！
print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")